﻿Public Class ucCadastroSolicitante
    Dim objBBL As New BLLSolicitante
    Dim filtro, tam As Integer
    Public codigo As Integer
    Private Sub ucCadastroSolicitante_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Carrega o DataGridView
        'Limpa os Campos
        'Formata As colunas
        Atualiza()
    End Sub
#Region "Métodos"
    Public Sub Atualiza()
        'Aqui defini O modo inicial do Meu Formulario
        'Automáticamente o ComboBox vai Iniciar  no Indice 2(Nome)
        cbFiltro.SelectedIndex = 2
        'Meu DataGridView vai Receber Todos os Resultados Do Metodo (LocalizaTudo)
        dgSolicitante.DataSource = objBBL.localizar(1, "")
        'Mando Minha Label Receber a Quantidade de Registros Encontrados
        tam = dgSolicitante.RowCount.ToString()
        ' lbContador.Text = dgSolicitante.RowCount.ToString() & " Solicitantes Cadastrados."
        dgSolicitante.Columns(0).HeaderText = "Código"
        'Defino o Tamanho da Coluna do DataGridView
        dgSolicitante.Columns(0).Width = 70
        dgSolicitante.Columns(1).HeaderText = "Nome"
        dgSolicitante.Columns(1).Width = 200
        dgSolicitante.Columns(2).HeaderText = "Empresa"
        dgSolicitante.Columns(2).Width = 200
        dgSolicitante.Columns(3).HeaderText = "Telefone"
        dgSolicitante.Columns(3).DefaultCellStyle.Format = "(00) 0000-0000"
        dgSolicitante.Columns(3).Width = 130
        dgSolicitante.Columns(4).HeaderText = "Celular"
        dgSolicitante.Columns(4).DefaultCellStyle.Format = "(00) 0000-0000"
        dgSolicitante.Columns(4).Width = 130
        dgSolicitante.Columns(5).HeaderText = "Cidade"
        dgSolicitante.Columns(5).Width = 200
        dgSolicitante.Columns(6).HeaderText = "Email"
        dgSolicitante.Columns(6).Width = 250
        dgSolicitante.Columns(7).HeaderText = "Observação"
        dgSolicitante.Columns(7).Width = 200
        dgSolicitante.Columns(8).HeaderText = "Status"
        dgSolicitante.Columns(8).Width = 130
       


    End Sub

#End Region
#Region "ComboBox Filtro"
    Private Sub cbFiltro_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cbFiltro.KeyPress
        'Não deixar o Usuário Digitar nada no ComboBox
        e.Handled = True
    End Sub
    Private Sub cbFiltro_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbFiltro.SelectedIndexChanged
        'Aqui defino o Filtro Por onde ele vai Localizar dentro do DatagridView
        Select Case cbFiltro.SelectedIndex
            'Case o Indice do ComboBox for 0 (Código)
            Case 0
                'Mando o Filtro pelo qual ele vai localizar ser da primeira coluna ou seja 0(Coluna onde fica os Códigos)
                filtro = 0
                'Case o Indice do ComboBox for 1 (Empresa)
            Case 1
                'Mando o Filtro pelo qual ele vai localizar ser da Terceira coluna ou seja 2(Coluna onde fica os Nomes das Empresas)
                filtro = 2
                'Case o Indice do ComboBox for 2 (Nome)
            Case 2
                'Mando o Filtro pelo qual ele vai localizar ser da Segunda coluna ou seja 1(Coluna onde fica os Nomes dos Solicitante)
                filtro = 1
        End Select
        'Sempre que ele Alterar um Valor do ComboBox o TextBox Volta a Ficar Vazio
        txtLocalizar.Text = ""
    End Sub
#End Region
#Region "TextBox Lozalizar"
    Private Sub txtLocalizar_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtLocalizar.KeyPress
        'Aqui Define o tipos de Caracteres que o TextBox Pode Aceitar
        'Se o ComboBox Estar no Indice 0(Código)
        If cbFiltro.SelectedIndex = 0 Then
            'Não deixo o Usuário Digitar Letras so Números
            'e Tambem libero para ele Poder Apagar o(s) Números
            If Not Char.IsNumber(e.KeyChar) And Not e.KeyChar = vbBack Then
                e.Handled = True
            End If
        End If
    End Sub
    Private Sub txtLocalizar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtLocalizar.TextChanged
        Dim texto As String = Nothing
        'Primeiro Percorre todo o datagrid
        For Each linha As DataGridViewRow In dgSolicitante.Rows
            'depois percorro todas as colunas da linha
            For Each celula As DataGridViewCell In dgSolicitante.Rows(linha.Index).Cells
                'seleciono qual coluna eu vou comparar
                If Trim(txtLocalizar.Text) <> "" Then
                    If celula.ColumnIndex = filtro Then
                        'Gravo o Valor que eexiste Naquela Coluna
                        texto = celula.Value.ToString.ToLower
                        'Se o que esta na coluna contem algo com o que eu escrevi no TextBox
                        If texto.Contains(txtLocalizar.Text.ToLower) Then
                            'Entao seleciona a linha para mim
                            Me.dgSolicitante.Rows(celula.RowIndex).Visible = True
                           
                        Else
                            'Else Desmarca a linha
                            dgSolicitante.CurrentCell = Nothing
                            Me.dgSolicitante.Rows(celula.RowIndex).Visible = False
                        End If
                    End If
                Else
                    'Else campo estiver Vazio
                    'posiciona o scroll na posição que inicial ou seja na linha 0 
                    'Me.dgSolicitante.FirstDisplayedScrollingRowIndex = 0
                    Me.dgSolicitante.Rows(celula.RowIndex).Visible = True
                End If
            Next
        Next
    End Sub
#End Region
#Region "Botão Novo"
    Private Sub tsbNovo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbNovo.Click
        frmSolicitante.tipo = "Novo"
        frmSolicitante.ShowDialog()
    End Sub
#End Region
#Region "Botão Excluir"
    Private Sub tsbExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbExcluir.Click
        Try
            Dim cod As Integer = 0
            Dim indice As Integer = -1
            'Percorre O DataGridView Verificando a Linha selecionada
            For Each linha As DataGridViewRow In dgSolicitante.SelectedRows
                If (Not linha.Cells("ext_codigo") Is Nothing) Then
                    'Guarda A Posição Selecionada
                    indice = linha.Index
                End If
            Next
            If (indice <> -1) Then

                If MessageBox.Show("Confirma Exclusão do(a) " & dgSolicitante.Rows(indice).Cells("ext_nome").Value.ToString() & " ?", "", MessageBoxButtons.YesNo) = vbYes Then
                    cod = dgSolicitante.Rows(indice).Cells("ext_codigo").Value.ToString()
                    cod = objBBL.Excluir(cod)
                    If cod = 1 Then
                        MsgBox("Solicitante " & dgSolicitante.Rows(indice).Cells("ext_nome").Value.ToString() & " Excluido com sucesso", MsgBoxStyle.OkOnly)
                    Else
                        MsgBox("Solicitante " & dgSolicitante.Rows(indice).Cells("ext_nome").Value.ToString() & " Desativado pois há relacionamento com agendamento", MsgBoxStyle.OkOnly)
                    End If

                    Atualiza()
                End If
            Else
                MsgBox("Selecione Solicitante a ser Excluido", MsgBoxStyle.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
#End Region
#Region "Botão Alterar"

    Private Sub tsbAlterar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbAlterar.Click
        Dim indice As Integer = -1
        Try
            For Each linha As DataGridViewRow In dgSolicitante.SelectedRows
                If (Not linha.Cells("ext_codigo") Is Nothing) Then
                    indice = linha.Index
                End If
            Next
            If (indice <> -1) Then
                codigo = dgSolicitante.Rows(indice).Cells("ext_codigo").Value.ToString()
                frmSolicitante.tipo = "Alterar"
                frmSolicitante.Codigo = codigo
                frmSolicitante.ShowDialog()
            Else
                MsgBox("Selecione o Solicitante a ser realizado á Alteração", MsgBoxStyle.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
        End Try
    End Sub
#End Region
#Region "Botão Localizar"
    Private Sub tsbLocalizar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbLocalizar.Click
        'Define se o Panel vai Mostrar ou Desaparecer
        'Se Ele jah estiver Aberto Então Mando Ficar Invisivel
        If pFiltro.Visible = True Then
            'Comando que faz o Panel ficar Invisivel
            pFiltro.Visible = False
            'Comando que Faz o Botão não ficar Checado(Borda em volta dele)
            tsbLocalizar.CheckState = 0
        Else
            'Caso Panel não estiver Visivel
            'Mando ficar Visivel
            pFiltro.Visible = True
            'Comando que Faz o Botão ficar Checado(Borda em volta dele)
            tsbLocalizar.CheckState = 1
            'Sempre Que Visivel o Panel mando o Campo Texto ficar Vazio
            txtLocalizar.Text = ""
        End If
    End Sub
#End Region
#Region "Botão Imprimir ficha"
    Private Sub tsbImprimir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbImprimir.Click
        Dim indice As Integer = -1
        Try
            For Each linha As DataGridViewRow In dgSolicitante.SelectedRows
                If (Not linha.Cells("ext_codigo") Is Nothing) Then
                    indice = linha.Index
                End If
            Next
            If (indice <> -1) Then
                Dim frm As New frmVisualizarImprimir
                frm.codigo = dgSolicitante.Rows(indice).Cells("ext_codigo").Value.ToString()
                frm.nome = dgSolicitante.Rows(indice).Cells("ext_nome").Value.ToString()
                frm.empresa = dgSolicitante.Rows(indice).Cells("ext_empresa").Value.ToString()
                frm.cidade = dgSolicitante.Rows(indice).Cells("ext_cidade").Value.ToString()
                frm.telefone = dgSolicitante.Rows(indice).Cells("ext_telefone").Value.ToString()
                frm.celular = dgSolicitante.Rows(indice).Cells("ext_celular").Value.ToString()
                frm.email = dgSolicitante.Rows(indice).Cells("ext_email").Value.ToString()
                frm.obs = dgSolicitante.Rows(indice).Cells("ext_obs").Value.ToString()
                frm.ShowDialog()
            Else
                MsgBox("Selecione um Solicitante para imprimir a ficha", MsgBoxStyle.Information)
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        Finally
        End Try

    End Sub
#End Region
#Region "Botão Voltar"

    Private Sub tsbVoltar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbVoltar.Click
        fMenu.TCPrincipal.SelectedIndex = 2
        fMenu.TCPrincipal_Click(sender, e)
    End Sub
#End Region

End Class
